package com.xu.system.service;

import com.xu.minio.model.MinioFile;
import com.xu.system.model.pojo.file.FileVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 文件服务
 *
 * @Author: 许乾伟
 * @Date: 2024/12/17 15:17
 */
public interface IFileService {
    /**
     * 保存minio文件记录
     * @param file
     * @return
     */
    MinioFile uploadMinioFile(MultipartFile file);

    /**
     * 保存文件关联
     * @param sourceId 数据源id
     * @param sourceCode 数据源标识
     * @param fileIds 文件id集合
     * @return
     */
    Boolean saveFileData(Long sourceId, String sourceCode, List<Long> fileIds);

    /**
     * 返回单个关联文件
     * @param sourceId 数据源id
     * @param sourceCode 数据源标识
     * @return
     */
    FileVo getOneFile(Long sourceId, String sourceCode);

    /**
     * 返回所有关联文件
     * @param sourceId 数据源id
     * @param sourceCode 数据源标识
     * @return
     */
    List<FileVo> getAllFile(Long sourceId, String sourceCode);

    /**
     * 返回文件id路径映射map
     * @param sourceIds 源id集合
     * @param sourceCode 数据源标识
     * @return
     */
    Map<Long,String> getFileMapBySourceIds(List<Long> sourceIds,String sourceCode);

    /**
     * 上传文件关联并保存文件
     * @param sourceId
     * @param sourceCode
     * @param file
     * @return
     */
    MinioFile uploadAndSaveFileData(Long sourceId, String sourceCode, MultipartFile file);
}
